package business;

import business.EmprestimoException;
import business.EmprestimoBO;
import dao.EmpregadoDAO;
import model.Empregado;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;

/**
 *
 */
public class EmprestimoBOTestVerificaIdade {

    public EmprestimoBOTestVerificaIdade() {
    }

    @BeforeClass
    public static void setUpClass() throws Exception {
    }

    @AfterClass
    public static void tearDownClass() throws Exception {
    }

    @Before
    public void setUp() {
    }

    @After
    public void tearDown() {
    }
    /**
     * Testes referentes ao método verifica se a idade é válida
     *
     *
     */
    
    
    @Test(expected = EmprestimoException.class) 
    public void testIdadeHomemAntesDoDiaQueFaz21Anos() throws EmprestimoException, Exception
    {
        SimpleDateFormat formatar = new SimpleDateFormat("dd/MM/yyyy");
        
        Calendar hoje = Calendar.getInstance();
        hoje.add(Calendar.YEAR, -21);
        hoje.add(Calendar.DAY_OF_MONTH, -1); 
        String data = formatar.format(hoje.getTime());
        
        Empregado empregado = new Empregado(Long.valueOf("1"), "Um nome1", Boolean.TRUE, BigDecimal.valueOf(4500), "1", data, "01/01/2011", "");
        EmprestimoBO.getInstance().verificaIdade(empregado);
    }
    
    @Test
    public void testIdadeHomemNoDiaQueFaz21Anos() throws EmprestimoException, Exception
    {
        SimpleDateFormat formatar = new SimpleDateFormat("dd/MM/yyyy");
        
        Calendar hoje = Calendar.getInstance();
        hoje.add(Calendar.YEAR, -21); 
        String data = formatar.format(hoje.getTime());
        
        Empregado empregado = new Empregado(Long.valueOf("1"), "Um nome1", Boolean.TRUE, BigDecimal.valueOf(4500), "1", data, "01/01/2011", "");
        EmprestimoBO.getInstance().verificaIdade(empregado);
    }
    
    @Test
    public void testIdadeHomemDepoisDoDiaQueFaz21Anos() throws EmprestimoException, Exception
    {
        SimpleDateFormat formatar = new SimpleDateFormat("dd/MM/yyyy");
        
        Calendar hoje = Calendar.getInstance();
        hoje.add(Calendar.YEAR, -21);
        hoje.add(Calendar.DAY_OF_MONTH, 1); 
        String data = formatar.format(hoje.getTime());
        
        Empregado empregado = new Empregado(Long.valueOf("1"), "Um nome1", Boolean.TRUE, BigDecimal.valueOf(4500), "1", data, "01/01/2011", "");
        EmprestimoBO.getInstance().verificaIdade(empregado);
    }
    
    @Test
    public void testIdadeHomemAntesDoDiaQueFaz65Anos() throws EmprestimoException, Exception
    {
        SimpleDateFormat formatar = new SimpleDateFormat("dd/MM/yyyy");
        
        Calendar hoje = Calendar.getInstance();
        hoje.add(Calendar.YEAR, -65);
        hoje.add(Calendar.DAY_OF_MONTH, -1); 
        String data = formatar.format(hoje.getTime());
        
        Empregado empregado = new Empregado(Long.valueOf("1"), "Um nome1", Boolean.TRUE, BigDecimal.valueOf(4500), "1", data, "01/01/2011", "");
        EmprestimoBO.getInstance().verificaIdade(empregado);
    }
    
    @Test
    public void testIdadeHomemNoDiaQueFaz65Anos() throws EmprestimoException, Exception
    {
        SimpleDateFormat formatar = new SimpleDateFormat("dd/MM/yyyy");
        
        Calendar hoje = Calendar.getInstance();
        hoje.add(Calendar.YEAR, -65);
        String data = formatar.format(hoje.getTime());
        
        Empregado empregado = new Empregado(Long.valueOf("1"), "Um nome1", Boolean.TRUE, BigDecimal.valueOf(4500), "1", data, "01/01/2011", "");
        EmprestimoBO.getInstance().verificaIdade(empregado);
    }
    
    @Test(expected = EmprestimoException.class) 
    public void testIdadeHomemDepoisDoDiaQueFaz65Anos() throws EmprestimoException, Exception
    {
        SimpleDateFormat formatar = new SimpleDateFormat("dd/MM/yyyy");
        
        Calendar hoje = Calendar.getInstance();
        hoje.add(Calendar.YEAR, -65);
        hoje.add(Calendar.DAY_OF_MONTH, 1); 
        String data = formatar.format(hoje.getTime());
        
        Empregado empregado = new Empregado(Long.valueOf("1"), "Um nome1", Boolean.TRUE, BigDecimal.valueOf(4500), "1", data, "01/01/2011", "");
        EmprestimoBO.getInstance().verificaIdade(empregado);
    }
    
    @Test(expected = EmprestimoException.class) 
    public void testIdadeMulherAntesDoDiaQueFaz21Anos() throws EmprestimoException, Exception
    {
        SimpleDateFormat formatar = new SimpleDateFormat("dd/MM/yyyy");
        
        Calendar hoje = Calendar.getInstance();
        hoje.add(Calendar.YEAR, -21);
        hoje.add(Calendar.DAY_OF_MONTH, -1); 
        String data = formatar.format(hoje.getTime());
        
        Empregado empregado = new Empregado(Long.valueOf("1"), "Um nome1", Boolean.FALSE, BigDecimal.valueOf(4500), "1", data, "01/01/2011", "");
        EmprestimoBO.getInstance().verificaIdade(empregado);
    }
    
    @Test
    public void testIdadeMulherNoDiaQueFaz21Anos() throws EmprestimoException, Exception
    {
        SimpleDateFormat formatar = new SimpleDateFormat("dd/MM/yyyy");
        
        Calendar hoje = Calendar.getInstance();
        hoje.add(Calendar.YEAR, -21);
        String data = formatar.format(hoje.getTime());
        
        Empregado empregado = new Empregado(Long.valueOf("1"), "Um nome1", Boolean.FALSE, BigDecimal.valueOf(4500), "1", data, "01/01/2011", "");
        EmprestimoBO.getInstance().verificaIdade(empregado);
    }
    
    @Test
    public void testIdadeMulherDepoisDoDiaQueFaz21Anos() throws EmprestimoException, Exception
    {
        SimpleDateFormat formatar = new SimpleDateFormat("dd/MM/yyyy");
        
        Calendar hoje = Calendar.getInstance();
        hoje.add(Calendar.YEAR, -21);
        hoje.add(Calendar.DAY_OF_MONTH, 1); 
        String data = formatar.format(hoje.getTime());
        
        Empregado empregado = new Empregado(Long.valueOf("1"), "Um nome1", Boolean.FALSE, BigDecimal.valueOf(4500), "1", data, "01/01/2011", "");
        EmprestimoBO.getInstance().verificaIdade(empregado);
    }
    
    @Test
    public void testIdadeMulherAntesDoDiaQueFaz61Anos() throws EmprestimoException, Exception
    {
        SimpleDateFormat formatar = new SimpleDateFormat("dd/MM/yyyy");
        
        Calendar hoje = Calendar.getInstance();
        hoje.add(Calendar.YEAR, -61);
        hoje.add(Calendar.DAY_OF_MONTH, -1); 
        String data = formatar.format(hoje.getTime());
        
        Empregado empregado = new Empregado(Long.valueOf("1"), "Um nome1", Boolean.FALSE, BigDecimal.valueOf(4500), "1", data, "01/01/2011", "");
        EmprestimoBO.getInstance().verificaIdade(empregado);
    }
    
    @Test
    public void testIdadeMulherNoDiaQueFaz61Anos() throws EmprestimoException, Exception
    {
        SimpleDateFormat formatar = new SimpleDateFormat("dd/MM/yyyy");
        
        Calendar hoje = Calendar.getInstance();
        hoje.add(Calendar.YEAR, -61);
        String data = formatar.format(hoje.getTime());
        
        Empregado empregado = new Empregado(Long.valueOf("1"), "Um nome1", Boolean.FALSE, BigDecimal.valueOf(4500), "1", data, "01/01/2011", "");
        EmprestimoBO.getInstance().verificaIdade(empregado);
    }
    
    @Test(expected = EmprestimoException.class) 
    public void testIdadeMulherDepoisDoDiaQueFaz61Anos() throws EmprestimoException, Exception
    {
        SimpleDateFormat formatar = new SimpleDateFormat("dd/MM/yyyy");
        
        Calendar hoje = Calendar.getInstance();
        hoje.add(Calendar.YEAR, -21);
        hoje.add(Calendar.DAY_OF_MONTH, 1); 
        String data = formatar.format(hoje.getTime());
        
        Empregado empregado = new Empregado(Long.valueOf("1"), "Um nome1", Boolean.FALSE, BigDecimal.valueOf(4500), "1", data, "01/01/2011", "");
        EmprestimoBO.getInstance().verificaIdade(empregado);
    }
    
}